package doc2db;

import java.awt.Desktop;
import java.io.File;
import java.net.URI;
import javax.swing.UIManager;

/**
 *  <p>Класс с системными константами</p>
 * @author yura synchronizator
 */
public class Keey {
    private static final Object SYNCHRONIZATOR = new Object() {};

    /** Место расположнения проэкта (user.home) */
    public static final String classPath = System.getProperty("user.home");
    //public static final String classPath = System.getProperty("java.class.path");
    /** Разделитель файлов */
    public static final String sp = File.separator;
    /** временная директория */
    public static final String TMP;
    /** Кодировка таблици в БД */
    public static String client_encoding = "null";
    /** Включён ли режим отладки */
    public static boolean debug = false; //true
    /** показывать ли визуальную обработку документа */
    public static boolean viewTree = true;
    /** Превращять ли все таблици в документе в одну таблицу */
    public static boolean isUniteTables = false;
    /** Завершена ли аутентификация */
    public static boolean isAutentComplete = false;
    /** Возможно ли соеденение с БД */
    public static boolean isConnected = false;
    /** Сохранять ли файлы после загрузки */
    public static boolean sevaHtml = false;
    /** запретить stdout на панель */
    public static boolean notMyOut = false;
    /** запретить stderr на панель */
    public static boolean notMyErr = false;
    /** древовидный ли заголовок у таблиц */
    public static boolean isTreeHead = false;
    /** сколько строк обьеденяет в себе заголовок, 0 - авто определение */
    public static int headDepth = 0;
    /**введёно ли имя таблици в БД*/
    public static boolean tableName = false;
    /**имя таблици в БД*/
    public static String tableNameValue = "";

    /**если обработка происходит не по однаму файлу а сразу всех*/
    private static boolean isMas = false;

    /** где находятся картинки */
    public static String imgPath = classPath + sp + "resurseDoc2Db" + sp + "resurse" + sp;

    public static String lastSelectedFile = ".";

    public static boolean isIsMas() {
        synchronized(SYNCHRONIZATOR) {
            return isMas;
        }
    }

    public static void setIsMas(boolean isMas) {
        synchronized(SYNCHRONIZATOR) {
            Keey.isMas = isMas;
        }
    }


    static {
        String osName = System.getProperty("os.name");
        if (osName.startsWith("Windows")) {
            File f = new File ("\\WINDOWS\\Temp");
            if (f.exists()){
                TMP = f.getAbsolutePath();
            } else {
                TMP = ".";
            }
        } else {
            TMP = "/tmp";
        }
    }


    
    /**
     * кодирует строку
     * @param dS трока которую нужно закодироврть
     * @return зкодированная строка
     */
    public static String decodStr (String dS){
        if(dS.equals(""))
            return "" + 0;

        long answer = 1;
        int kee = 6;
        for(int i = 0 ; i < dS.length() ; i ++, kee ++){
            answer *= (dS.charAt(i) * kee);
        }

        return "" + answer;
    }

    /**
     * Returns the name of the LookAndFeel class that implements the native
     * system look and feel if there is one, otherwise the name of the
     * default cross platform LookAndFeel class. This value can be overriden
     * by setting the swing.systemlaf system property.
     * @return the String of the LookAndFeel class
     * @see javax.swing.UIManager.getSystemLookAndFeelClassName()
     */
    public static String lookAndFeel () {
        return UIManager.getSystemLookAndFeelClassName();
    }

    /**
     * Executes command colling the default browser in a separate process.
     * @param path file thet need to open
     */
    public static void openBrowser(String path) {
        Desktop d = Desktop.getDesktop();
        if (d == null){
            System.err.println("Can get desktop to open browser");
            return;
        }
        try {
            d.browse(new URI(path));
        } catch (Exception ex) {
            System.err.println(ex);
            System.err.println("Can open url : " + path);
        }
    }


}
